The present invention relates to data processing systems and, more particularly, to memory systems used in data processing systems, where such memory systems employ longitudinal parity bits for checking data.
The use of parity bits to check and correct binary data stored in memory systems is well known in the art. Two "types" of parity bits are often employed, with one type commonly referred to as "horizontal" parity bits and the other type commonly referred to as "longitudinal" parity bits. A horizontal parity bit is generated by logically combining the bits in an individual data word. The horizontal parity bit is stored in memory with the data word, and the validity of the data word can later be checked by again logically combining the bits in the data word and comparing the result with the stored horizontal parity bit.
A longitudinal parity bit, on the other hand, is generated by logically combining a column of bits, i.e., bits in the corresponding bit location of each of a plurality of data words, so that when a plurality of words are stored in memory, a longitudinal parity word having the same number of bits as each data word may be stored and used to check for an error somewhere in the memory.
In some systems, where sufficient memory space is available for storing parity bits, data correction is achieved by checking both horizontal parity and longitudinal parity. In such systems, horizontal parity indicates the data word where an error has occurred, and longitudinal parity indicates the particular column or bit location of the error in the data word.
When longitudinal parity is used, either alone or in conjunction with horizontal parity, some difficulties arise when the memory is comprised of a plurality of memory modules. In such a case, the longitudinal parity word generated by logically combining bits in all of the data words is stored in only one of the modules. In particular, when a memory comprises read-only memory (ROM) modules, as is the case in many data processing systems having stored microprograms and control routines, and when a particular data word in the memory needs to be changed in order to update the memory, both the memory module having the data word to be changed and the memory module having the stored longitudinal parity word must be removed and replaced with new modules having updated words. Requiring the replacement of two modules significantly adds to the cost of maintaining such systems.